package com.lucene.blog.util;

import com.lucene.blog.bean.Blog;

/**
 * 分页工具类
 * @author yachao
 *
 */
public class PageUtil {
	
	/**
	 * 生成分页代码
	 * @param targetUrl 目标地址
	 * @param totalNum 总记录数
	 * @param currentPage 当前页
	 * @param pageSize 每页大小
	 * @param param
	 * @return
	 */
	public static String getPagination(String targetUrl, long totalNum, int currentPage, int pageSize, String param) {
		// 计算总页数
		
		long totalPage = (totalNum - 1) / pageSize + 1;
		if(totalPage == 0) {
			return "未查询到数据";
		} else {
			StringBuffer pageCode = new StringBuffer();
			if(currentPage > 1) {
				pageCode.append("<li><a href='" + targetUrl + "?page=1&" + param + "' >首页</a></li>");
				pageCode.append("<li><a href='" + targetUrl + "?page=" + (currentPage - 1) + "&" + param + "' >上一页</a></li>");
			} else {
				pageCode.append("<li class='disabled' ><a>首页</a></li>");
				pageCode.append("<li class='disabled' ><a>上一页</a></li>");
			}
			
			for(int i = currentPage - 2; i <= currentPage + 2; i++) {
				if(i < 1 || i > totalPage) {
					continue;
				}
				if(i == currentPage) {
					pageCode.append("<li class='active' ><a href='" + targetUrl + "?page=" + i + "&" + param + "' >" + i + "</a></li>");
				} else {
					pageCode.append("<li><a href='" + targetUrl + "?page=" + i + "&" + param + "' >" + i + "</a></li>");
				}
			}
			
			if(currentPage < totalPage) {
				pageCode.append("<li><a href='" + targetUrl + "?page=" + (currentPage + 1) + "&" + param + "' >下一页</a></li>");
				pageCode.append("<li><a href='" + targetUrl + "?page=" + totalPage + "&" + param + "' >尾页</a></li>");
			} else {
				pageCode.append("<li class='disabled' ><a>下一页</a></li>");
				pageCode.append("<li class='disabled' ><a>尾页</a></li>");
			}
			return pageCode.toString();
		}
	}
	
	public static String getPrevAndNextPageCode(Blog prev, Blog next, String projectContext) {
		StringBuffer pageCode = new StringBuffer();
		
		if(prev == null || prev.getBlogId() == null) {
			pageCode.append("<p>上一篇: 无</p>");
		} else {
			pageCode.append("<p>上一篇: <a href='" + projectContext + "/blog/articles/" + prev.getBlogId() + ".html' >" + prev.getTitle() + "</a></p>");
		}
		
		if(next == null || next.getBlogId() == null) {
			pageCode.append("<p>下一篇: 无</p>");
		} else {
			pageCode.append("<p>下一篇: <a href='" + projectContext + "/blog/articles/" + next.getBlogId() + ".html' >" + next.getTitle() + "</a></p>");
		}
		return pageCode.toString();
	}
	
	/**
	 * Lucene搜索博客结果的分页
	 * @param page
	 * @param totalNum
	 * @param q
	 * @param pageSize
	 * @param projectContext
	 * @return
	 */
	public static String getUpAndDownPageCode(Integer page, Integer totalNum, String q, Integer pageSize, String projectContext) {
		// 计算总页数
		long totalPage = (totalNum - 1) / pageSize + 1;
		StringBuffer pageCode = new StringBuffer();
		
		if(totalPage == 0) {
			return "";
		} else {
			pageCode.append("<nav>");
			pageCode.append("<li class='pager'>");
			
			if(page > 1) {
				pageCode.append("<li><a href='" + projectContext + "/blog/search.html?page" + (page - 1) + "&q=" + q + "' >上一页</a></li>");
			} else {
				pageCode.append("<li class='disabled'><a>上一页</a></li>");
			}
			
			if(page < totalPage) {
				pageCode.append("<li><a href='" + projectContext + "/blog/search.html?page=" + (page + 1) + "&q=" + q + "' >下一页</a></li>");
			} else {
				pageCode.append("<li class='disabled'><a>下一页</a></li>");
			}
			pageCode.append("</ul>");
			pageCode.append("<nav>");
			pageCode.append("<nav>");
			pageCode.append("<nav>");
		}
		return pageCode.toString();
	}
}
